/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Empregado;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 *
 * @author andrevieira
 */
public class GravarArquivo {

    public void adicionarEmpregado(Empregado e) {
        ObjectOutputStream output = null;
        Map<String, Empregado> mapaEmpregado = new HashMap<String, Empregado>();
        LerArquivo leituraArquivo = new LerArquivo();

        try {
            mapaEmpregado.putAll(leituraArquivo.recuperarEmpregado());
            mapaEmpregado.put(e.getCpf(), e);

            // Abertura do arquivo
            try {
                output = new ObjectOutputStream(
                        new FileOutputStream("arquivo.dat"));
            } catch (IOException exception) {
                System.err.println("Não foi possível abrir o arquivo.");
            }

            Iterator<Map.Entry<String, Empregado>> iterador = mapaEmpregado.entrySet().iterator();
            while (iterador.hasNext()) {
                output.writeObject(iterador.next().getValue());
            }
        } catch (IOException exception) {
            System.err.println("Não foi possível gravar o arquivo.");
            return;
        } catch (NullPointerException nullPointerException) {
        }

        // Fechamento do arquivo
        try {
            output.close();
        } catch (IOException exception) {
            System.err.println("Não foi possivel fechar o arquivo.");
            System.exit(1);
        }
    }

    public void removerEmpregado(Empregado e) {
        ObjectOutputStream output = null;
        Map<String, Empregado> mapaEmpregado = new HashMap<String, Empregado>();
        LerArquivo leituraArquivo = new LerArquivo();

        try {
            mapaEmpregado.putAll(leituraArquivo.recuperarEmpregado());

            Iterator<Map.Entry<String, Empregado>> iteratorRemocao = mapaEmpregado.entrySet().iterator();
            while (iteratorRemocao.hasNext()) {
                if (iteratorRemocao.next().getKey().equals(e.getCpf())) {
                    iteratorRemocao.remove();
                }
            }

            // Abertura do arquivo
            try {
                output = new ObjectOutputStream(
                        new FileOutputStream("arquivo.dat"));
            } catch (IOException exception) {
                System.err.println("Não foi possível abrir o arquivo.");
            }

            Iterator<Map.Entry<String, Empregado>> iteratorInclusao = mapaEmpregado.entrySet().iterator();
            while (iteratorInclusao.hasNext()) {
                output.writeObject(iteratorInclusao.next().getValue());
            }
        } catch (IOException exception) {
            System.err.println("Não foi possível gravar o arquivo.");
            return;
        } catch (NullPointerException nullPointerException) {
        }

        // Fechamento do arquivo
        try {
            output.close();
        } catch (IOException exception) {
            System.err.println("Não foi possivel fechar o arquivo.");
            System.exit(1);
        }
    }
}